' CGI_SaveClocking.bas
#COMPILE EXE
#DIM ALL
'
#INCLUDE "Win32api.inc"
#INCLUDE "PBCGI.INC"
#INCLUDE "PB_FileHandlingRoutines.inc"
#INCLUDE "DateFunctions.inc"
'
$WebServer = "mini001"           ' name of web server
'
FUNCTION PBMAIN () AS LONG
  LOCAL strParams  AS STRING     ' parameter string
  LOCAL lngP AS LONG             ' parameter count
  DIM a_strParams(1) AS STRING   ' array for parameters
  DIM a_strOutput() AS STRING    ' parameters output
  LOCAL strData AS STRING        ' data string
  LOCAL strDataFile AS STRING    ' name of saved file
  LOCAL lngR AS LONG             ' parameter number
  LOCAL strTime AS STRING        ' time in hh_mm_ss format
  '
  LOCAL strUsername AS STRING    ' users name
  LOCAL strPayroll AS STRING     ' payroll id
  '
  ' Read from STDIN
  strParams = ReadCGI
  '
  ' Count and parse the parameters into an array
  lngP = ParseParams(strParams, a_strParams())
  '
  IF lngP THEN
  ' we have some parameters
    REDIM a_strOutput(UBOUND(a_strParams)) AS STRING
    '
    FOR lngR = 1 TO UBOUND(a_strParams)
    ' get the user details
      a_strOutput(lngR) = DecodeCGI(a_strParams(lngR) )
      '
      SELECT CASE PARSE$(a_strOutput(lngR),"=",1)
        CASE "username"
          strUsername = PARSE$(a_strOutput(lngR),"=",2)
        CASE "payroll"
          strPayroll = PARSE$(a_strOutput(lngR),"=",2)
      END SELECT
      '
      IF TRIM$(a_strOutput(lngR))<>"" THEN
      ' exclude blank lines
        strData = strData & a_strOutput(lngR) & $CRLF
      END IF
    NEXT lngR
    '
    IF TRIM$(strUsername) = "" OR TRIM$(strPayroll) = "" THEN
    ' data is missing - reject submission
      STDOUT "LOCATION: " & "http://" & $WebServer & _
                        "/CGI_BIN/Data/Incomplete.htm" & $CRLF
      EXIT FUNCTION
    END IF
    ' add on the date and time
    strData = strData & "Date=" & funUKDate() & $CRLF
    strData = strData & "Time=" & TIME$
    '
    ' replace the : in time with _
    strTime = TIME$
    REPLACE ":" WITH "_" IN strTime
    '
    strDataFile = EXE.PATH$ & "Data\" & _
                  funReverseUKDateAsNumber(funUKDate()) & "_" & _
                  strTime & ".txt"
    ' save the data to disk
    funSaveStringAsFile(strDataFile, strData)
    '
    STDOUT "LOCATION: " & "http://" & $WebServer & _
                        "/CGI_BIN/Data/Confirmed.htm" & $CRLF
  ELSE
    STDOUT "LOCATION: " & "http://" & $WebServer & _
                        "/CGI_BIN/Data/Incomplete.htm" & $CRLF
  END IF
  '
END FUNCTION